--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Commit e72d0f892b6f6fc85957ce23d0b52888eb47353d
Parents : 540a533
Author : Mark Qvist <mark@unsigned.io>
Date : 2022-10-08T17:20:00+02:00
Add switches to KivyMD for disabling elevation shader on unsupported hardware
Changes
2 files changed, 14 insertions(+), 3 deletions(-)
Diff
diff --git a/sbapp/kivymd/data/glsl/elevation/header.frag b/sbapp/kivymd/data/glsl/elevation/header.frag
index acb3a8a5..c09ce5c7 100644
--- a/sbapp/kivymd/data/glsl/elevation/header.frag
+++ b/sbapp/kivymd/data/glsl/elevation/header.frag
@@ -1,4 +1,4 @@
-#ifdef GL_ES
+#ifdef GL_FRAGMENT_PRECISION_HIGH
precision highp float;
#endif
diff --git a/sbapp/kivymd/uix/behaviors/elevation.py b/sbapp/kivymd/uix/behaviors/elevation.py
index 47b2af0a..615edacf 100755
--- a/sbapp/kivymd/uix/behaviors/elevation.py
+++ b/sbapp/kivymd/uix/behaviors/elevation.py
@@ -379,6 +379,7 @@ from kivy.properties import (
from kivy.uix.widget import Widget
from kivymd import glsl_path
+from kivymd.app import MDApp
# FIXME: Add shadow manipulation with canvas instructions such as
@@ -606,16 +607,26 @@ class CommonElevationBehavior(Widget):
def __init__(self, **kwargs):
super().__init__(**kwargs)
+ if hasattr(MDApp.get_running_app(), "shaders_disabled") and MDApp.get_running_app().shaders_disabled:
+ self.shaders_disabled = True
+ else:
+ self.shaders_disabled = False
+
with self.canvas.before:
self.context = RenderContext(use_parent_projection=True)
with self.context:
- self.rect = RoundedRectangle(pos=self.pos, size=self.size)
+ if self.shaders_disabled:
+ self.rect = None
+ del self.rect
+ else:
+ self.rect = RoundedRectangle(pos=self.pos, size=self.size)
self.after_init()
def after_init(self, *args):
Clock.schedule_once(self.check_for_relative_behavior)
- Clock.schedule_once(self.set_shader_string)
+ if not self.shaders_disabled:
+ Clock.schedule_once(self.set_shader_string)
Clock.schedule_once(lambda x: self.on_elevation(self, self.elevation))
self.on_pos()
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────